import { IScene } from "../base";
import { IMessage } from "./Message";

export interface ISession {
  /**
   * 个人会话唯一ID
   * 数据库自增ID
   */
  _id?: string;
  /**
   * 系统会话UUID
   * 单聊两个人的会话SID相同，群聊所有人的sid都相同
   */
  sessionId?: string;
  /**
   * 会话的拥有者账号
   */
  account?: string;
  /** 
   * 场景
   * p2p 单人聊天
   * team 群聊
   */
  scene?: IScene;
  /**
   * 聊天对象
   * 账号或群ID
   */
  to?: string;
  /** 会话更新的时间 */
  updateTime?: number;
  unread?: number;
  /** 此会话的最后一条消息 */
  lastMsg?: IMessage;
  /*
   * 消息已读回执时间戳
   * 如果有此字段说明此时间戳之前的所有消息对方均已读
   * 仅对单人聊天起作用
   * 目前暂不开发此功能
   */
  msgReceiptTime?: number;
  isTop?: boolean;
  /** 置顶的扩展字段 */
  topCustom?: object;
  /** 
   * 自定义的扩展字段
   * 可在创建会话或通过API更新会话时储存信息
   * 例如用于客服场景显示客户来源之类的信息
   */
  custom?: object;

  // 客户端
  avatar?: string;
  name?: string;
  updateTimeShow?: string;
  lastMsgShow?: string;
}

/**
 * Session Mongoose Model
 */
export const SchemaSession = {
  sessionId: String,
  account: String,
  scene: String,
  to: String,
  updateTime: Number,
  unread: Number,
  lastMsg: Object,
  msgReceiptTime: Number,
  isTop: Boolean,
  topCustom: Object,
  custom: Object,
}
